package kr.pe.johnkim.dayve.activity;

import java.io.IOException;

import org.json.JSONException;

import kr.pe.johnkim.dayve.provider.DayveMember;
import kr.pe.johnkim.dayve.rest.DayveMemberRest;
import kr.pe.johnkim.dayve.util.DayveCommon;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;

/**
 * Dayve 인트로 화면 클래스이다.
 * 
 * 설정 파일을 읽어서 자동로그인이 설정되어 있으면 
 * Login 화면을 건너뛰고 Main 화면으로 바로 이동한다.
 * 
 * @author johnkim
 *
 */
public class DayveIntroView extends Activity {

	public static String TAG = DayveIntroView.class.getSimpleName();
	
	private Handler mHandler = new Handler();
	
	private long INTRO_DELAY_TIME = 2000;		// 대기시간
	
	private String DAYVE_AUTO_LOGIN_YN = "";			// 자동 로그인 유무
	
	private String DAYVE_ID = "";
	
	DayveMemberRest dayveMemberRest = new DayveMemberRest();
	DayveCommon dayveCommon = new DayveCommon();
	
	// 현재 시간.
	private static String currentDate;
	
	/* (non-Javadoc)
	 * @see android.app.Activity#onCreate(android.os.Bundle)
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		Log.i(TAG, "onCreate");
		
		setContentView(R.layout.dayve_intro);
		
		confirmNotification();
		
		// 현재 시간을 가져 온다.
		currentDate = dayveCommon.getCurrentDate();

		Log.i(TAG, "AUTO_LOGIN_YN : " + DAYVE_AUTO_LOGIN_YN);
		
		/**
		 * 자동로그인 옵션을 사용할 경우 여기에서 Mileage 를 적립한다.
		 */
		if(("Y").equals(DAYVE_AUTO_LOGIN_YN)) {
			Thread thread = new Thread(null, doBackgroundThreadProcessing, "Background_insertLog");
			thread.start();
		}
		
		mHandler.postDelayed(mRunnable, INTRO_DELAY_TIME);
	}
	
	/**
	 * SharedPreferences 정보를 확인 한다.
	 */
	public void confirmNotification() {
		String myPf = "kr.pe.johnkim.dayve.activity_preferences";
		SharedPreferences mSharedPreferences = getSharedPreferences(myPf, Activity.MODE_PRIVATE);
		
		// id 를 가져 온다.
		DAYVE_ID = mSharedPreferences.getString("dayve_id", "");
		DAYVE_AUTO_LOGIN_YN = mSharedPreferences.getString("dayve_auto_login_yn", "");
	}
	
	/**
	 * 사용자의 마일리지 점수를 가져 와서 1 증가한 뒤 업데이트 한다.
	 */
	private void checkMileage() {
		Log.i(TAG, "checkMileage");
		
		DayveMember dayveMember = new DayveMember();
		
		int intOldMileage = 0;
		
		dayveMember.setId(DAYVE_ID);
		dayveMember.setModifyDate(currentDate);
		
		try {
			intOldMileage = Integer.parseInt(dayveMemberRest.selectMileage(dayveMember).getMileage());
			
			intOldMileage++;
			
			dayveMember.setMileage("" + intOldMileage);
			
			if(("SUCCESS").equals(dayveMemberRest.updateMileage(dayveMember))) {
				Log.i(TAG, "Success to update mileage.");
			} else {
				Log.i(TAG, "Fail to update mileage.");
			}
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
	
	/**
	 * 자동로그인 옵션에 따라서 다른 페이지로 이동 한다.
	 */
	Runnable mRunnable = new Runnable() {
		
//		@Override
		public void run() {
			// TODO Auto-generated method stub
			if(("Y").equals(DAYVE_AUTO_LOGIN_YN)) {
				Intent i = new Intent(DayveIntroView.this, DayveMainView.class);
				startActivity(i);
			} else {
				Intent i = new Intent(DayveIntroView.this, DayveLoginView.class);
				startActivity(i);
			}
			
			finish();
		}
	};

	/**
	 * 자동로그인 옵션을 사용할 경우 Mileage 를 적립 한다.
	 */
	private Runnable doBackgroundThreadProcessing = new Runnable() {

		public void run() {
			// TODO Auto-generated method stub
			checkMileage();
		}
	};
}
